﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0145_MyPow : IAlgorithm
    {
        // Pow(x, n)

        // 实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn ）。

        // 提示：
        //  -100.0 < x < 100.0
        //  -2^31 <= n <= 2^31-1
        //  -10^4 <= xn <= 10^4

        public void Test()
        {
            Console.WriteLine(MyPow(2, 3));
        }

        // 算法
        // 折半计算
        public double MyPow(double x, int n)
        {
            double res = 1.0;
            for (int i = n; i != 0; i /= 2)
            {
                if (i % 2 != 0)
                    res *= x;
                x *= x;
            }
            return n < 0 ? 1 / res : res;
        }
    }
}
